﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BLLTZS.Funcionalidad
{
    public class BLLDomicilio: BLLGenerico
    {
        public BLLDomicilio(TZSDataContext contexto) : base(contexto) { }
        public BLLDomicilio() : this(new TZSDataContext()) { }

        public TZS_Domicilio TraerUltimaVersion(string nombreUsuario)
        {
            return (from d in Contexto.TZS_Domicilios
                    where d.TZS_Perfil.TZS_Usuario.NombreUsuario.ToLower().Equals(nombreUsuario.ToLower())
                    orderby d.Version descending
                    select d).FirstOrDefault();
        }

        public void GuardarNuevaVersion(TZS_Domicilio domicilio, string nombreUsuario)
        {
            TZS_Domicilio versionVieja = TraerUltimaVersion(nombreUsuario);

            domicilio.TZS_Perfil = versionVieja.TZS_Perfil;
            domicilio.Version = versionVieja.Version + 1;
            Contexto.TZS_Domicilios.InsertOnSubmit(domicilio);
        }

        public void CrearNuevo(TZS_Perfil perfil)
        {
            TZS_Domicilio nuevoDomicilio = new TZS_Domicilio();
            nuevoDomicilio.TZS_Perfil = perfil;
            nuevoDomicilio.Version = 1;

            BLLLocalidad bllLocalidad = new BLLLocalidad(Contexto);
            nuevoDomicilio.TZS_Localidad = bllLocalidad.TraerLocalidades().FirstOrDefault();

            Contexto.TZS_Domicilios.InsertOnSubmit(nuevoDomicilio);
        }

        public List<TZS_Domicilio> TraerHistorial(int idUsuario)
        {
            return (from d in Contexto.TZS_Domicilios
                    where d.TZS_Perfil.IdUsuario == idUsuario
                    orderby d.Version descending
                    select d).ToList();
        }
    }
}
